#!/usr/bin/env python
# coding: utf-8

# 日期：11月1号    
# 更新日期：11月8号（更新内容） 11月14号（更新内容）    
# 撰写人：黄泽豪   
# 
# -----
# 
# ## 课堂学习内容：
# 
# > * 1、高德API-WEB服务    
# > * 2、地理/逆地理编码   
# > * 3、路径规划
# > * 4、行政区域查询
# > * 5、搜索POI
# > * 6、IP定位
# > * 7、批量请求接口
# > * 8、静态地图
# > * 9、坐标转换
# > * 10、天气查询
# > * 11、输入提示
# > * 12、交通态势
# ...
# 
# ## 课后作业：
# 
# > * 1、[地理/逆地理编码](https://lbs.amap.com/api/webservice/guide/api/georegeo)   
# > * 2、[路径规划](http://lbs.amap.com/api/webservice/guide/api/direction) 
# > * 3、[行政区域查询](https://lbs.amap.com/api/webservice/guide/api/district)
# > * 4、[搜索POI](https://lbs.amap.com/api/webservice/guide/api/search)
# > * 5、[IP定位](https://lbs.amap.com/api/webservice/guide/api/ipconfig)
# > * 6、[批量请求接口](https://lbs.amap.com/api/webservice/guide/api/batchrequest)
# > * 7、[静态地图](https://lbs.amap.com/api/webservice/guide/api/staticmaps)
# > * 8、[坐标转换](https://lbs.amap.com/api/webservice/guide/api/convert)
# > * 9、[天气查询](https://lbs.amap.com/api/webservice/guide/api/weatherinfo)
# > * 10、[输入提示](https://lbs.amap.com/api/webservice/guide/api/inputtips)
# > * 11、[交通态势](https://lbs.amap.com/api/webservice/guide/api/trafficstatus)
# ...

# ### 准备工作

# In[253]:


import requests,json
import pandas as pd
huang_key = "afd48d21eae6b744e054a3f1ac4411d8"


# ### 地理编码
# 
# > * 1、结构化地址的定义： 首先，地址肯定是一串字符，内含国家、省份、城市、区县、城镇、乡村、街道、门牌号码、屋邨、大厦等建筑物名称。按照由大区域名称到小区域名称组合在一起的字符。一个有效的地址应该是独一无二的。注意：针对大陆、港、澳地区的地理编码转换时可以将国家信息选择性的忽略，但省、市、城镇等级别的地址构成是不能忽略的。暂时不支持返回台湾省的详细地址信息。    
# > * 2、url:https://restapi.amap.com/v3/geocode/geo?parameters      
# > * 3、requests.get()       
# > * 4、适用场景：将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。
#     结构化地址举例：北京市朝阳区阜通东大街6号转换后经纬度：116.480881,39.989410 
#     地标性建筑举例：天安门转换后经纬度：116.397499,39.908722
# > * 5、参数：   
# 
# >> * A.必选：key（高德API秘钥），address(结构化地址)  
# >> * B.可选：city(指定查询的城市)，batch(批量查询控制，缺省值：false)，sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[254]:


#### 准备数据 请思考：高德API是怎么获取数据的？数据库查询
中大南方_address = "广东省广州市中山大学南方学院"


# In[255]:


# 地理编码函数
def geo(key,address,city=None,batch="false",sig=None,output="JSON",callback=None):
    """获取高德API的地理编码
    注释：key是指高德API的秘钥，请先去注册
          address是指结构化地址，具体请查看：https://lbs.amap.com/api/webservice/guide/api/georegeo   
    """
    url = "https://restapi.amap.com/v3/geocode/geo?parameters"
    params = {
    "key":huang_key,
    "address":中大南方_address,
    "city":city,
    "batch":batch,
    "sig":sig,
    "output":output,
    "callback":callback
    }
    
    response = requests.get(url,params=params)
    results = r.json()
    return results


# In[256]:


url = "https://restapi.amap.com/v3/geocode/geo?parameters"
params = {
    "key":huang_key,
    "address":中大南方_address
}
# positional argument follows keyword argument
# pa 一定要放在前面，keyword argument放在末尾！！！可以
response = requests.get(url,params=params)
response


# In[257]:


中大南方_location = response.json()
中大南方_location


# ### 逆地理编码
# 
# > * A.url : https://restapi.amap.com/v3/geocode/regeo?parameters    
# > * B.requests.get() 
# > * C.适用场景：将经纬度转换为详细结构化的地址，且返回附近周边的POI、AOI信息。
# 例如：116.480881,39.989410 转换地址描述后：北京市朝阳区阜通东大街6号
# > * D.参数：    
# 
# >> * 1、必选：key（高德API秘钥）,location(经纬度坐标)
# >> * 2、可选: poitype（返回附近POI类型），radius[(默认：1000），搜索半径]，extensions[(默认：base)可选"all",描述数据详细指数]，batch（批量查询控制，缺省值：false），roadlevel（道路等级），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数），homeorcorp（是否优化POI返回顺序，需要extensions为all时才能生效，缺省值：0）

# In[259]:


# 数据准备 中大南方_location
中大南方_location = '113.679287,23.632575'


# In[260]:


# 逆地理编码函数
def regeo(key,location,poitype=None,radius=1000,extensions="base",batch="false",roadlevel=None,sig=None,output="JSON",callback=None,homeorcorp=0):
    """获取高德API的地理编码
    注释：key是指高德API的秘钥，请先去注册
          location是指经纬度坐标，具体请查看：https://lbs.amap.com/api/webservice/guide/api/georegeo
    """
    url = "https://restapi.amap.com/v3/geocode/regeo?parameters"
    
    params = {
        "key":key,
        "location":中大南方_location,
        "poitype":poitype,
        "radius":radius,
        "extensions":extensions,
        "batch":batch,
        "roadlevel":roadlevel,
        "sig":sig,
        "output":output,
        "callback":callback,
        "homeorcorp":homeorcorp
    }
    
    r = requests.get(url,params)
    results = r.json()
    return results


# In[261]:


url = "https://restapi.amap.com/v3/geocode/regeo?parameters"
params = {
    "key":huang_key,
    "location":中大南方_location,
    "extensions":"all"
}
r = requests.get(url,params)
r


# In[262]:


r.json()


# In[263]:


pd.json_normalize(r.json()['regeocode']['pois'])


# ### 路径规划
# 
# > * 1、步行
# > * 2、公交车
# > * 3、驾车
# > * 4、适用场景：
#  >> * 无需展现地图的场景下，进行线路查询，如以线路结果页形式展现换乘方案；
#  >> * 根据返回线路数据，自行开发线路导航。

# #### 步行 
# 
# > * 1、url:https://restapi.amap.com/v3/direction/walking?parameters    
# > * 2、requests.get()
# > * 3、参数：
# 
# >> * A.必选：key，origin（出发点（经度，纬度））,destination（目的地（经度，纬度））
# >> * B.可选：sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[265]:


# 数据准备： 
origin = "广东省广州市中山大学南方学院"
destination = "广州市从化区龙岗"


# In[266]:


def geo(key,address,city=None,batch="false",sig=None,output="JSON",callback=None):
    """获取高德API的地理编码
    注释：key是指高德API的秘钥，请先去注册
          address是指结构化地址，具体请查看：https://lbs.amap.com/api/webservice/guide/api/georegeo   
    """
    url = "https://restapi.amap.com/v3/geocode/geo?parameters"
    params = {
    "key":huang_key,
    "address":address,
    "city":city,
    "batch":batch,
    "sig":sig,
    "output":output,
    "callback":callback
    }
    
    response = requests.get(url,params=params)
    results = r.json()
    return results


# In[267]:


起始点_中大南方 = geocode(huang_key,origin)
起始点_中大南方


# In[268]:


目的地_龙岗 = geocode(huang_key,destination)
目的地_龙岗


# In[269]:


origin = "113.679287,23.632575"
destination = "113.668051,23.600869"


# In[270]:


def walking(key,origin,destination,sig=None,output="JSON",callback=None):
    """获取高德API的地理编码
    注释：key是指高德API的秘钥，请先去注册
          origin和destination是指出发点和目的地，具体请查看：https://lbs.amap.com/api/webservice/guide/api/direction   
    """
    url = "https://restapi.amap.com/v3/direction/walking?parameters"
    params = {
        "key":key,
        "origin":origin,
        "destination":destination,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    response = requests.get(url,params=params)
    results = response.json()
    return results


# In[271]:


# 步行
i = walking(huang_key,origin,destination)
i


# #### 公交车 （暨南大学-->猎德）
# 
# > * 1、url:https://restapi.amap.com/v3/direction/transit/integrated?parameters    
# > * 2、requests.get()
# > * 3、参数：
# 
# >> * A.必选：key，origin（出发点（经度，纬度））,destination（目的地（经度，纬度）），city
# >> * B.可选：cityd（跨城公交规划时的终点城市（跨城必填）），extensions（base:返回基本信息；all：返回全部信息），strategy（公交换乘策略，缺省值：0），nightflag（是否计算夜班车，缺省值：0），date（出发日期），time（出发时间），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[272]:


origin = "113.350961,23.131577"
destination = "113.336127,23.113409"
city = "广州"


# In[273]:


暨南大学_address = "广东省广州市暨南大学"
猎德大桥_address = "广东省广州市猎德大桥"
def bus(key,origin,destination,city,cityd=None,extensions="base",strategy=0,nightflag=0,date=None,time=None,sig=None,output="JSON",callback=None):
    bus_url = "https://restapi.amap.com/v3/direction/transit/integrated?parameters"
    params ={
        "key":key,
        "origin":origin,
        "destination":destination,
        "city":city,
        "cityd":cityd,
        "extensions":extensions,
        "strategy":strategy,
        "nightflag":nightflag,
        "date":date,
        "time":time,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    r = requests.get(bus_url,params=params)
    result = r.json()
    return result


# In[274]:


a = bus(huang_key,origin,destination,city)
a


# #### 自驾车 （暨南大学-->猎德）
# 
# > * 1、url:https://restapi.amap.com/v3/direction/driving?parameters    
# > * 2、requests.get()
# > * 3、参数：
# 
# >> * A.必选：key，origin（出发点（经度，纬度））,destination（目的地（经度，纬度）），extensions（base:返回基本信息；all：返回全部信息）
# >> * B.可选：originid（出发点poiid），destinationid（目的地poiid），origintype（起点的poi类别），destinationtype（终点的poi类别），strategy（驾车选择策略，缺省值：0），waypoints（途经点），avoidpolygons（避让区域），avoidroad（避让道路名），province（用汉字填入车牌省份缩写，用于判断是否限行），number（填入除省份及标点之外，车牌的字母和数字（需大写）。用于判断限行相关。），cartype（车辆类型），ferry（在路径规划中，是否使用轮渡），roadaggregation（是否返回路径聚合信息，缺省值：false），nosteps（是否返回steps字段内容，缺省值：0），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[275]:


origin = "113.350961,23.131577"
destination = "113.336127,23.113409"


# In[276]:


暨南大学_address = "广东省广州市暨南大学"
猎德大桥_address = "广东省广州市猎德大桥"
def driving(key,origin,destination,extensions="base",originid=None,destinationid=None,origintype=None,destinationtype=None,strategy=0,waypoints=None,avoidpolygons=None,avoidroad=None,province=None,number=None,cartype=None,ferry=None,roadaggregation="false",nosteps=0,sig=None,output="JSON",callback=None):
    driving_url = "https://restapi.amap.com/v3/direction/driving?parameters"
    params ={
        "key":key,
        "origin":origin,
        "destination":destination,
        "extensions":extensions,
        "originid":originid,
        "destinationid":destinationid,
        "origintype":origintype,
        "destinationtype":destinationtype,
        "strategy":strategy,
        "waypoints":waypoints,
        "avoidpolygons":avoidpolygons,
        "avoidroad":avoidroad,
        "province":province,
        "number":number,
        "cartype":cartype,
        "ferry":ferry,
        "roadaggregation":roadaggregation,
        "nosteps":nosteps,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    r = requests.get(driving_url,params=params)
    result = r.json()
    return result


# In[277]:


b = driving(huang_key,origin,destination)
b


# #### 骑行 （暨南大学-->猎德）
# 
# > * 1、url:https://restapi.amap.com/v4/direction/bicycling?parameters    
# > * 2、requests.get()
# > * 3、参数：
# 
# >> * 必选：key，origin（出发点（经度，纬度））,destination（目的地（经度，纬度））

# In[278]:


origin = "113.350961,23.131577"
destination = "113.336127,23.113409"


# In[279]:


暨南大学_address = "广东省广州市暨南大学"
猎德大桥_address = "广东省广州市猎德大桥"
def bicycling(key,origin,destination):
    bicycling_url = "https://restapi.amap.com/v4/direction/bicycling?parameters"
    params ={
        "key":key,
        "origin":origin,
        "destination":destination
    }
    r = requests.get(bicycling_url,params=params)
    result = r.json()
    return result


# In[280]:


c = bicycling(huang_key,origin,destination)
c


# #### 货车 （暨南大学-->猎德）
# 
# > * 1、url:https://restapi.amap.com/v4/direction/truck?parameters    
# > * 2、requests.get()
# > * 3、参数：
# 
# >> * A.必选：key，origin（出发点（经度，纬度））,destination（目的地（经度，纬度）），extensions（base:返回基本信息；all：返回全部信息）
# >> * B.可选：originid（出发点poiid），destinationid（目的地poiid），origintype（起点的poi类别），destinationtype（终点的poi类别），diu（设备唯一编号），strategy（驾车选择策略，缺省值：1），waypoints（途经点），size（车辆大小），height（车辆高度，缺省值：1.6），width （车辆宽度，缺省值：2.5），load（车辆总重，缺省值：10），weight（货车核定载重，缺省值：0.9），axis（车辆轴数，缺省值：2），province（车牌省份），number（车牌详情），cartype（车辆类型，默认值：0），avoidpolygons（避让区域），showpolyline（是否返回路线数据，缺省值：1），nosteps（是否返回steps字段内容，缺省值：0）

# In[281]:


origin = "113.350961,23.131577"
destination = "113.336127,23.113409"


# In[282]:


暨南大学_address = "广东省广州市暨南大学"
猎德大桥_address = "广东省广州市猎德大桥"
def truck(key,origin,destination,extensions="base",originid=None,destinationid=None,origintype=None,destinationtype=None,diu=None,strategy=1,waypoints=None,size=None,height=1.6,width=2.5,load=10,weight=0.9,axis=2,avoidpolygons=None,showpolyline=1,province=None,number=None,cartype=0,nosteps=0):
    truck_url = "https://restapi.amap.com/v4/direction/truck?parameters"
    params ={
        "key":key,
        "origin":origin,
        "destination":destination,
        "extensions":extensions,
        "originid":originid,
        "destinationid":destinationid,
        "origintype":origintype,
        "destinationtype":destinationtype,
        "diu":diu,
        "strategy":strategy,
        "waypoints":waypoints,
        "size":size,
        "height":height,
        "width":width,
        "load":load,
        "weight":weight,
        "axis":axis,
        "avoidpolygons":avoidpolygons,
        "showpolyline":showpolyline,
        "province":province,
        "number":number,
        "cartype":cartype,
        "nosteps":nosteps,
    }
    r = requests.get(truck_url,params=params)
    result = r.json()
    return result


# In[283]:


e = truck(huang_key,origin,destination,size=3)
e


# ### 行政区域查询
# 
# > * 1、行政区域查询是一类简单的HTTP接口，根据用户输入的搜索条件可以帮助用户快速的查找特定的行政区域信息。    
# > * 2、url:https://restapi.amap.com/v3/config/district?parameters      
# > * 3、requests.get() 
# > * 4、适用场景：用户希望通过得到行政区域信息，进行开发工作。
# > * 5、参数：   
# 
# >> * A.必选：key（高德API秘钥）
# >> * B.可选：keywords（查询关键字），subdistrict（子级行政区，缺省值：1），page（需要第几页数据，缺省值：1），offset（最外层返回数据个数，缺省值：20），extensions（返回结果控制，默认值：base），filter（根据区划过滤），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[284]:


def district(key,keywords=None,subdistrict=1,page=1,offset=20,extensions="base",filter=None,output="JSON",callback=None):
    district_url = "https://restapi.amap.com/v3/config/district?parameters"
    params = {
        "key":key,
        "keywords":keywords,
        "subdistrict":subdistrict,
        "page":page,
        "offset":offset,
        "extensions":extensions,
        "filter":filter,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(district_url,params=params)
    result = r.json()
    return result


# In[285]:


f = district(huang_key,keywords="广东",subdistrict=1)
f


# ### 搜索POI
# 
# > * 1、关键字搜索
# > * 2、周边搜索
# > * 3、多边形搜索
# > * 4、ID查询

# #### 关键字搜索 
# 
# > * 1、url:https://restapi.amap.com/v3/place/text?parameters    
# > * 2、requests.get()
# > * 3、适用场景：通过用POI的关键字进行条件搜索，例如：肯德基、朝阳公园等；同时支持设置POI类型搜索，例如：银行。
# > * 4、参数：
# 
# >> * A.必选：key，keyword（查询关键字），types（查询POI类型），(keywords和types两者至少必选其一)
# >> * B.可选：city（查询城市），citylimit（仅返回指定城市数据，缺省值：false），children（是否按照层级展示子POI数据，缺省值：0），offset（每页记录数据，缺省值：20），page（当前页数，缺省值：1），extensions（返回结果控制，默认值：base），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）
# 

# In[286]:


def text(key,keywords=None,types=None,city=None,citylimit="false",children=0,offset=20,page=1,extensions="base",sig=None,output="JSON",callback=None):
    text_url = "https://restapi.amap.com/v3/place/text?parameters"
    params = {
        "key":key,
        "keywords":keywords,
        "types":types,
        "city":city,
        "citylimit":citylimit,
        "children":children,
        "offset":offset,
        "page":page,
        "extensions":extensions,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(text_url,params=params)
    result = r.json()
    return result


# In[287]:


g = text(huang_key,keywords="美食",city="广州")
g


# #### 周边搜索 
# 
# > * 1、url:https://restapi.amap.com/v3/place/around?parameters    
# > * 2、requests.get()
# > * 3、适用场景：在用户传入经纬度坐标点附近，在设定的范围内，按照关键字或POI类型搜索。
# > * 4、参数：
# 
# >> * A.必选：key，location
# >> * B.可选：keyword（查询关键字），types（查询POI类型），city（查询城市），radius（查询半径，缺省值：3000），sortrule（排序规则，缺省值：distance），offset（每页记录数据，缺省值：20），page（当前页数，缺省值：1），extensions（返回结果控制，默认值：base），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[288]:


location="113.679287,23.632575"


# In[289]:


def around(key,location,keywords=None,types=None,city=None,radius=3000,sortrule="distance",offset=20,page=1,extensions="base",sig=None,output="JSON",callback=None):
    around_url = "https://restapi.amap.com/v3/place/around?parameters"
    params = {
        "key":key,
        "location":location,
        "keywords":keywords,
        "types":types,
        "city":city,
        "radius":radius,
        "sortrule":sortrule,
        "offset":offset,
        "page":page,
        "extensions":extensions,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(around_url,params=params)
    result = r.json()
    return result


# In[290]:


h = around(huang_key,location,keywords="美食",city="从化")
h


# #### 多边形搜索 
# 
# > * 1、url:https://restapi.amap.com/v3/place/polygon?parameters     
# > * 2、requests.get()
# > * 3、适用场景：在多边形区域内进行搜索。
# > * 4、参数：
# 
# >> * A.必选：key，polygon（经纬度坐标对）
# >> * B.可选：keyword（查询关键字），types（查询POI类型），city（查询城市），offset（每页记录数据，缺省值：20），page（当前页数，缺省值：1），extensions（返回结果控制，默认值：base），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[291]:


polygon="116.460988,40.006919|116.48231,40.007381;116.47516,39.99713|116.472596,39.985227|116.45669,39.984989|116.460988,40.006919"


# In[292]:


def duobianxing(huang_key,polygon,keywords,types=None,city=None,offset=20,page=1,extensions="base",sig=None,output="JSON",callback=None):
    polygon_url = "https://restapi.amap.com/v3/place/polygon?parameters "
    params = {
        "key":huang_key,
        "polygon":polygon,
        "keywords":keywords,
        "types":types,
        "city":city,
        "offset":offset,
        "page":page,
        "extensions":extensions,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(polygon_url,params=params)
    result = r.json()
    return result


# In[293]:


zb = duobianxing(huang_key,polygon,keywords="711")
zb


# #### ID查询
# 
# > * 1、url:https://restapi.amap.com/v3/place/detail?parameters     
# > * 2、requests.get()
# > * 3、适用场景：通过POI ID，查询某个POI详情，建议可同输入提示API配合使用。
# > * 4、参数：
# 
# >> * A.必选：key，id（兴趣点ID）
# >> * B.可选：sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[294]:


id = "B0FFFAB6J2"


# In[295]:


def detail(key,id,sig=None,output="JSON",callback=None):
    detail_url = "https://restapi.amap.com/v3/place/detail?parameters"
    params = {
        "key":key,
        "id":id,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(detail_url,params=params)
    result = r.json()
    return result


# In[296]:


j = detail(huang_key,id)
j


# ### IP定位
# 
# > * A.url : https://restapi.amap.com/v3/ip?parameters   
# > * B.requests.get()
# > * C.适用场景：希望能够将IP信息转换为地理位置信息。
# > * D.参数：    
# 
# >> * 1、必选：key（高德API秘钥）
# >> * 2、可选:ip（ip地址），sig（数字签名），output（返回数据格式类型，缺省值：JSON）

# In[297]:


ip = "114.247.50.2"


# In[298]:


def ip(key,ip,sig=None,output="JSON"):
    ip_url = "https://restapi.amap.com/v3/ip?parameters"
    params = {
        "key":key,
        "ip":ip,
        "sig":sig,
        "output":"json"
    }
    
    r = requests.get(ip_url,params=params)
    result = r.json()
    return result


# In[299]:


l = ip(huang_key,ip)
l


# ### 静态地图
# 
# > * A.url : https://restapi.amap.com/v3/staticmap?parameters   
# > * B.requests.get() 
# > * C.截取图片呈现地理位置及周边信息
# > * D.参数：    
# 
# >> * 1、必选：key（高德API秘钥），location，zoom（地图级别）
# >> * 2、可选:size（地图大小，默认：400* 400），scale（普通/高清，默认：1），markers（标注），labels（标签），paths（折线），traffic（交通路况标识，缺省值：0），sig（数字签名）

# In[368]:


from PIL import Image
from io import BytesIO
import requests

def static_map(key,location,zoom,size=None,scale=1,markers=None,labels=None,paths=None,traffic=0,page=None,sig=None):
    url = "https://restapi.amap.com/v3/staticmap?parameters"
    params = {
        "key":key,
        "location":location,
        "zoom":zoom,
        "size":size,
        "scale":scale,
        "markers":markers,
        "labels":labels,
        "paths":paths,
        "traffic":traffic,
        "sig":sig,
        "output":"json"
        }
    
    r = requests.get(url,params=params)
    data = Image.open(BytesIO(r.content))
    return data


# In[369]:


中大南方 = static_map(huang_key,location="113.679287,23.632575",zoom=15)
中大南方


# ### 坐标转换
# 
# > * A.url : https://restapi.amap.com/v3/assistant/coordinate/convert?parameters   
# > * B.requests.get() 
# > * C.适用场景：为了使用高德服务，用户需要将非高德坐标转换为高德坐标。
# > * D.参数：    
# 
# >> * 1、必选：key（高德API秘钥），locations
# >> * 2、可选:coordsys（原坐标系，缺省值：autonavi），sig（数字签名），output（返回数据格式类型，缺省值：JSON）

# In[303]:


locations = "116.481499,39.990475|116.481499,39.990375"


# In[304]:


def convert(key,locations,coordsys="autonavi",sig=None,output="JSON"):
    convert_url = " https://restapi.amap.com/v3/assistant/coordinate/convert?parameters"
    params = {
        "key":key,
        "locations":locations,
        "coordsys":coordsys,
        "sig":sig,
        "output":output
    }
    
    r = requests.get(convert_url,params=params)
    result = r.json()
    return result


# In[305]:


m = convert(huang_key,locations,coordsys="gps")
m


# ### 天气查询
# 
# > * A.url : https://restapi.amap.com/v3/weather/weatherInfo?parameters   
# > * B.requests.get() 
# > * C.适用场景：需要使用相关天气查询的时候。
# > * D.参数：    
# 
# >> * 1、必选：key（高德API秘钥），city
# >> * 2、可选:extensions（气象类型,base:返回实况天气，all:返回预报天气），output（返回数据格式类型，缺省值：JSON）

# In[306]:


def weatherlnfo(key,city,extensions=None,output="JSON"):
    weatherlnfo_url = " https://restapi.amap.com/v3/weather/weatherInfo?parameters"
    params = {
        "key":key,
        "city":city,
        "extensions":extensions,
        "output":output
    }
    
    r = requests.get(weatherlnfo_url,params=params)
    result = r.json()
    return result


# In[307]:


k = weatherlnfo(huang_key,city="从化",extensions="base")
k


# ### 输入提示
# 
# > * A.url : https://restapi.amap.com/v3/assistant/inputtips?parameters   
# > * B.requests.get()
# > * C.适用场景：在高德客户端的使用场景，输入“关键字”之后出现提示相关。
# > * D.参数：    
# 
# >> * 1、必选：key（高德API秘钥），keywords
# >> * 2、可选:type（POI分类），location（坐标），city（搜索城市），citylimit（仅返回指定城市数据，缺省值：false），datatype（返回的数据类型，可选：all），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[308]:


def inputtips(key,keywords,type=None,location=None,city=None,citylimit="true",datatype="all",sig=None,output="JSON",callback=None):
    inputtips_url = "https://restapi.amap.com/v3/assistant/inputtips?parameters"
    params = {
        "key":key,
        "keywords":keywords,
        "type":type,
        "location":location,
        "city":city,
        "citylimit":citylimit,
        "datatype":datatype,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(inputtips_url,params=params)
    result = r.json()
    return result


# In[309]:


o = inputtips(huang_key,keywords="肯德基",city="广州",datatype="all")
o


# ### 交通态势
# 
# > * 1、矩形区域交通态势
# > * 2、圆形区域交通态势
# > * 3、指定路线交通态势
# > * 4、适用场景：希望能够确定矩形、圆形或某条道路的交通态势情况，路况信息2分钟更新一次。

# #### 矩形区域交通态势
# 
# > * A.url : https://restapi.amap.com/v3/traffic/status/rectangle?parameters   
# > * B.requests.get()    
# > * C.参数：    
# 
# >> * 1、必选：key（高德API秘钥），rectangle（代表此为矩形区域查询）
# >> * 2、可选:level（道路等级，默认值：5），extensions（返回结果控制，可选：base或all），sig（数字签名），output（返回数据格式类型，缺省值：JSON），callback（回调函数）

# In[310]:


rectangle = "113.679287,23.632575;113.677134,23.635678"


# In[311]:


def rectangle(key,rectangle,level=5,extensions="base",sig=None,output="JSON",callback=None):
    rectangle_url = "https://restapi.amap.com/v3/traffic/status/rectangle?parameters"
    params = {
        "key":key,
        "rectangle":rectangle,
        "level":level,
        "extensions":extensions,
        "sig":sig,
        "output":output,
        "callback":callback
    }
    
    r = requests.get(rectangle_url,params=params)
    result = r.json()
    return result


# In[312]:


p = rectangle(huang_key,rectangle)
p


# > * 由于交通态势需要权限，我无法获取，便不再继续。
